<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
   <!-- React核心包  最先引入  提供一个对象React -->
   <script src="../react18/react.development.js"></script>
   <!-- React操作DOM的包   提供了一个对象  ReactDOM-->
   <script src="../react18/react-dom.development.js"></script>
   <!-- 引入Babel的包,用来解析JSX语法为JS语法 -->
   <script src="../react18/babel.min.js"></script>

   <style>
  .outer{
    width: 300px;
    height: 300px;
    background-color: aqua;
  }
   </style>
</head>
<body>
  <div id="app"></div>

  <!--如果需要babel对当前的script内部的jsx编译,则需要设置script的type属性  -->
  <script type="text/babel">

    // 获取一个真实的dom
    const oApp=document.getElementById("app");
    console.dir(oApp,"真实的DOM")

    /* 
      虚拟DOM:
        本质就是Object类型的对象(一般对象)
        虚拟DOM比较'轻',真实DOM比较"重",虚拟DOM是react内部在用的,无需真实的DOM身上那么多的属性
        模拟DOM早晚会被react转换为真实DOM,呈现在页面上
    */

    // 使用jsx方式创建虚拟DOM  案例1
    // const vDOM =<div>hello JSX</div>;
    // console.log("虚拟DOM",vDOM);

    // 使用jsx方式创建虚拟DOM  案例2
    const vDOM =(
      <div className="outer">
        <h1>JSX</h1>
        <p>jsx很方便</p>
        </div>
    )
        console.log("虚拟DOM",vDOM)


    // 创建容器并渲染虚拟DOM  先找到容器,再使用render方法
    ReactDOM.createRoot(document.getElementById("app")).render(vDOM)
  
 
  </script>
</body>
</html>